home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
mus
/
misc
/
Pro14bitbet.lha
/
Pro14bitbet.e
< prev
Wrap
Text File
|
1998-02-11
|
5KB
|
192 lines
/*
Pro14bitbet.e source-code. No include-files needed.
Made by Kjetil S Matheussen 1996. Please change the
code as much as you like. It's totally free code.
Please compile with E 2.21b by Wouter van Oortmerssen.
*/
CONST MEMF_CHIP=2,
MEMF_ANY=0,
MEMF_LARGEST=$20000,
MODE_OLDFILE=$3ED,
MODE_NEWFILE=$3EE
DEF ledigminne,sampleinnplass,sampleutplass1,sampleutplass2,sampleinnhandle,
result,fillengde,sampleuthandle1,sampleuthandle2
PROC main()
initialiser()
prosess()
avslutt()
ENDPROC
PROC prosess()
DEF lokke,tillokke,rest
tillokke:=fillengde/30000
IF tillokke>0
FOR lokke:=0 TO (tillokke-1)
ladsample(30000)
converter(30000)
lagre(15000)
ENDFOR
ENDIF
rest:=fillengde-(tillokke*30000)
IF rest>0
ladsample(rest)
converter(rest)
lagre(rest/2)
ENDIF
ENDPROC
PROC ladsample(lengde)
result:=Read(sampleinnhandle,sampleinnplass,lengde)
ENDPROC
PROC lagre(lengde)
result:=Write(sampleuthandle1,sampleutplass1,lengde)
result:=Write(sampleuthandle2,sampleutplass2,lengde)
ENDPROC
PROC converter(lengde)
DEF lokke
MOVE.L sampleinnplass,A1
FOR lokke:=0 TO lengde STEP 2
MOVE.L lokke,D1
MOVE.W D1,D2
ROR.W #1,D2
MOVE.W D2,A2
ADDA.L sampleutplass1,A2
MOVE.L A2,A3
MOVE.B 0(A1,D1.W),D3
LSR.B #2,D3
MOVE.W D2,A2
ADDA.L sampleutplass2,A2
MOVE.B 1(A1,D1.W),(A2)
BTST.B #0,(A2)
BEQ.S satt
BRA.S usatt
satt:
BSET #0,D3
usatt:
MOVE.B D3,(A3)
ENDFOR
ENDPROC
PROC initialiser()
DEF uth1,uth2,insamp,outsamp
IF arg[]=0 THEN slutt('Pro14bitbet insample (outsample)','')
insamp:=arg
outsamp:=mellomrom(arg)
/* WriteF('\n\n\n\s,\sw\n',insamp,outsamp)
CleanUp(0)*/
fillengde:=FileLength(insamp)
IF fillengde<=0 THEN slutt(insamp,' iznogood')
ledigminne:=AvailMem(MEMF_ANY)
/* WriteF('\d\n',ledigminne)
CleanUp(0)*/
IF ledigminne<70000 THEN slutt('not enough memory','')
sampleinnplass:=AllocMem(31000,MEMF_ANY)
sampleutplass1:=AllocMem(16000,MEMF_ANY)
sampleutplass2:=AllocMem(16000,MEMF_ANY)
sampleinnhandle:=Open(insamp,MODE_OLDFILE)
IF sampleinnhandle=0 THEN slutt('Could not open: ',insamp)
uth1:=strkop(outsamp,'.raw8')
uth2:=strkop2(outsamp,'.raw6')
sampleuthandle1:=Open(uth2,MODE_NEWFILE)
IF sampleuthandle1=0 THEN slutt('Could not open: ',uth2)
sampleuthandle2:=Open(uth1,MODE_NEWFILE)
IF sampleuthandle2=0 THEN slutt('Could not open: ',uth1)
ENDPROC
PROC mellomrom(string)
DEF lokke,strlen=0,mellomplass=0
REPEAT
strlen++
UNTIL string[strlen]=0
FOR lokke:=1 TO strlen
IF string[lokke]=" "
IF mellomplass>0 THEN slutt('Pro14bitbet insample (outsample)','')
mellomplass:=lokke
MOVE.L string,A1
ADD.L lokke,A1
MOVE.B #0,(A1)
ENDIF
ENDFOR
ENDPROC (string+mellomplass+1)
PROC slutt(a,b)
WriteF('\s',a)
WriteF('\s\n',b)
avslutt()
ENDPROC
PROC avslutt()
IF sampleuthandle1>0 THEN Close(sampleuthandle1)
IF sampleuthandle2>0 THEN Close(sampleuthandle2)
IF sampleinnhandle>0 THEN Close(sampleinnhandle)
IF sampleutplass1>0 THEN FreeMem(sampleutplass1,16000)
IF sampleutplass2>0 THEN FreeMem(sampleutplass2,16000)
IF sampleinnplass>0 THEN FreeMem(sampleinnplass,31000)
CleanUp(0)
ENDPROC
PROC strkop(str1,str2)
DEF str,strlen,lokke,str2len,utstr
str:='wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'
strlen:=StrLen(str1)
str2len:=StrLen(str2)
MOVE.L str1,A1
MOVE.L str,A2
FOR lokke:=1 TO strlen
MOVE.B (A1)+,(A2)+
ENDFOR
MOVE.L str2,A1
FOR lokke:=1 TO str2len
MOVE.B (A1)+,(A2)+
ENDFOR
MOVE.B #0,(A2)+
utstr:=str
ENDPROC utstr
PROC strkop2(str1,str2)
DEF str,strlen,lokke,str2len,utstr
str:='wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'
strlen:=StrLen(str1)
str2len:=StrLen(str2)
MOVE.L str1,A1
MOVE.L str,A2
FOR lokke:=1 TO strlen
MOVE.B (A1)+,(A2)+
ENDFOR
MOVE.L str2,A1
FOR lokke:=1 TO str2len
MOVE.B (A1)+,(A2)+
ENDFOR
MOVE.B #0,(A2)+
utstr:=str
ENDPROC utstr